Component({
  /**
   * 组件的属性列表
   * 组件对外的属性，对外暴露的属性映射到组件内部的属性
   */
  properties: {

  },
  

  // 是用于组件间代码共享的特性，每个behavior包含一组属性，数据，生命周期函数和方法，组件引用的时候，属性，数据和方法会被合并到组件中去，生命周期也会被调用
  // 每个组件可以引用多个behavior，behavior也可以引用其他的behavior

  behaviors: [],

  /**
   * 组件的初始数据
   */
  data: {
    isShow: false,
    name: '张露露',
    age: 16,
    sex: '女',
    tel: '15555302290',
    numA: 12,
    numB: 23,
    sum: 0
  },

  // 数据监听器可以用于监听和响应任何属性和数据字段的变化
  observers: {
    'numA, numB': function(A, B){
      this.setData({
        sum: A + B
      })
    }
  },

  /**
   * 组件的方法列表
   */
  methods: {
    showReal: function(){
      this.setData({
        isShow: !this.data.isShow,
        sum: this.data.numA + this.data.numB
      })
      // 通过this可以访问behavior.js里面的内容
    }
  },

  // 组件关系定义
  // 1、 必须在两个组件定义中都加入relations，否则不会生效
  // 2、在ralations关系定义中，可以使用behavior来代替组件路径作为关联的目标节点
  // type : parent 、 child 、 ancestor 、 descendant
  relations: {

  },

  // 外部样式类
  // 组件模板中可以提供一个<slot> 节点，用于承载组件引用时提供的子节点
  // 可以使用多个slot，以不同的name区分 
  // <slot name="before"></slot>, <view slot="before">这里是插入到组件slot name="before"中的内容</view>
  externalClasses: {

  },

  lifetimes: {
    // 组件生命周期函数 -------------- 在组件刚刚被创建的时候执行，这个时候不能调用setData
    created: function() {
    },

    // 组件生命周期函数 --------------在组件布局完成后执行
    ready: function() {
    },

    // 组件生命周期函数 -------------- 在组件实例进入页面节点的时候执行
    attached: function() {

    },

    // 组件生命周期函数 -------------- 实例被从页面节点移除的时候执行的
    detached: function() {

    },

    // 组件生命周期函数 -------------- 组件实例被移动到节点树另一个外置时执行
    moved: function() {

    },
  },

  // 组件所在页面的生命周期
  // 其中可用的生命周期就是下面的三个
  pageLifetimes: {

    show: function() {
    },

    hide: function() {
    },

    resize: function() {
    }

  },

  // 定义段过滤器
  definitionFilter: {
  }

})
